﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using OutdoorLib.BaseEntity.Agency;
using AgencyEntityLib.BaseEntity.Dictionary;
using Grishko.DataTier;
using OutdoorLib.BaseEntity.Face; 

/// <summary>
/// Набор инструментов по обработки страницы/контрола
/// </summary>
public class PageTools
{
    public PageTools()
    {
        //
        // TODO: Add constructor logic here
        //
    }

    /// <summary>
    /// Прописывает скрипт на событие OnChange. По событию - выводиться предупреждение -Есть несохраненные данные
    /// </summary>
    /// <param name="Coll"></param>
    /// <param name="ControlName"></param>
    /// <param name="EventName"></param>
    /// <param name="AttachedFunction"></param>
    public static void SetAlertForTextBox(ControlCollection Coll, string ControlName, string EventName, string AttachedFunction)
    {
        foreach (Control item in Coll)
        {
            if (item.Controls.Count > 0) SetAlertForTextBox(item.Controls, ControlName, EventName, AttachedFunction + ";");
            if (item.GetType().FullName.IndexOf(ControlName) > -1)
            {
                WebControl f = (WebControl)item;
                f.Attributes.Add(EventName, AttachedFunction + ";");
            }
        }
    }

    public static void SetAlertForTextBox_Static(ControlCollection Coll, string ControlName, string EventName, string AttachedFunction)
    {
        foreach (Control item in Coll)
        {
            if (item.Controls.Count > 0) SetAlertForTextBox_Static(item.Controls, ControlName, EventName, AttachedFunction + ";");
            if (item.GetType().FullName.IndexOf(ControlName) > -1)
            {
                WebControl f = (WebControl)item;
                f.Attributes.Add(EventName, AttachedFunction + ";");
            }
        }
    }



    ///// <summary>
    ///// Определить по карте доступна ли данная страница для текущего пользователя
    ///// </summary>
    ///// <param name="UrlKey"></param>
    ///// <returns></returns>
    //public static bool UserInrolesForUrl(string UrlKey)
    //{
    //    bool isEnabled = true;
    //    GlobalConstants.CurrentAgency.SetPageUrl(ref UrlKey, ref isEnabled);
    //    return isEnabled;
    //}

    /// <summary>
    /// Установить страницу по Agency.SiteMap и ее доступность текущему пользователю
    /// </summary>
    /// <param name="UrlKey">Id странички без .aspx </param>
    /// <param name="isEnabled"></param>
    //public static void SetPageUrl(ref string UrlKey, ref bool isEnabled)
    //{
    //    GlobalConstants.CurrentAgency.SetPageUrl(ref UrlKey, ref isEnabled);
    //}

    /// <summary>
    ///  проверить текущего пользователя в роли
    /// </summary>
    /// <param name="RoleName"></param>
    /// <returns></returns>
    public static bool UserInRole(string RoleName)
    {
        return GlobalConstants.CurrentEmployeer.IsInRole(new string[] { RoleName });
    }

    /// <summary>
    ///  Проверить возможна ли работа текущего пользователя с элементом сайта заданным SiteMapItemKey
    /// </summary>
    /// <param name="RoleName"></param>
    /// <returns></returns>
    //public static bool UserInRoleForSiteMapItem(string SiteMapItemKey)
    //{
    //    SiteMapItem SiteItem = (SiteMapItem)GlobalConstants.CurrentAgency.SitMap.FindItem(SiteMapItemKey);
    //    if (null == SiteItem) return true;
    //    return GlobalConstants.CurrentEmployeer.IsInRole(SiteItem.ConvertRolesToArray());
    //}

    /// <summary>
    /// Возвращает справочник указанного DictionaryTypeID
    /// </summary>
    /// <param name="DictionaryTypeID"></param>
    /// <returns></returns>
    public static EntityList GetDictionary(string DictionaryTypeID)
    {
        DictionaryItemList list = new DictionaryItemList();
        list.DictionaryTypeID = DictionaryTypeID;
        list.Load();
        return list;
    }
}
